
[dbo].[asi_CreateOrRenamePK]
CREATE PROCEDURE asi_CreateOrRenamePK @tablename nvarchar(512), @columns nvarchar(512) AS
BEGIN
DECLARE @keyName nvarchar(512)
SELECT @keyName = name
FROM sysobjects
WHERE parent_obj = OBJECT_ID(@tablename)
AND xtype = 'PK'
IF @keyName IS NOT NULL AND @keyName <> ('PK_' + @tablename)
EXEC ('sp_rename ''' + @keyName + ''', ''PK_' + @tablename + ''',''OBJECT''')
IF @keyName IS NULL
BEGIN
DECLARE @clustered nvarchar(12)
SET @clustered = 'CLUSTERED'
IF EXISTS (SELECT 1 FROM sysindexes where id = OBJECT_ID(@tablename) AND indid = 1)
SET @clustered = 'NONCLUSTERED'
EXEC ('ALTER TABLE ' + @tablename + ' ADD CONSTRAINT PK_' + @tablename + ' PRIMARY KEY ' + @clustered +' (' + @columns + ')')
END
END
GO